package com.qfq.tainzhi.videoplayer.widget.media;

import android.graphics.SurfaceTexture;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import tv.danmaku.ijk.media.player.IMediaPlayer;

/**
 * Created by muqing on 2019/6/1.
 * Email: qfq61@qq.com
 */
public interface IRenderView {
    int AR_ASPECT_FIT_PARENT = 0; // without clip
    int AR_ASPECT_FILL_PARENT = 1; // may clip
    int AR_ASPECT_WRAP_CONTENT = 2;
    int AR_MATCH_PARENT = 3;
    int AR_16_9_FIT_PARENT = 4;
    int AR_4_3_FIT_PARENT = 5;
    
    View getView();
    
    boolean shouldWaitForResize();
    
    void setVideoSize(int videoWidth, int videoHeight);
    
    void setVideoSampleAspectRatio(int videoSarNum, int videoSarDen);
    
    void setVideoRotation(int degree);
    
    void setAspectRatio(int aspectRatio);
    
    void addRenderCallback(@NonNull IRenderCallback callback);
    
    void removeRenderCallback(@NonNull IRenderCallback callback);
    
    interface ISurfaceHolder {
        void bindToMediaPlayer(IMediaPlayer mp);
        
        @NonNull
        IRenderView getRenderView();
        
        @Nullable
        SurfaceHolder getSurfaceHolder();
        
        @Nullable
        Surface openSurface();
        
        @Nullable
        SurfaceTexture getSurfaceTexture();
    }
    
    interface IRenderCallback {
        /**
         * @param holder
         * @param width  could be 0
         * @param height could be 0
         */
        void onSurfaceCreated(@NonNull ISurfaceHolder holder, int width, int height);
        
        /**
         * @param holder
         * @param format could be 0
         * @param width
         * @param height
         */
        void onSurfaceChanged(@NonNull ISurfaceHolder holder, int format, int width, int height);
        
        void onSurfaceDestroyed(@NonNull ISurfaceHolder holder);
    }
}
